# 导入Ollama聊天模型
from langchain_ollama.chat_models import ChatOllama
# 导入聊天场景的提示模板
from langchain_core.prompts import ChatPromptTemplate
# 创建一个 ChatOllama 对象

llm = ChatOllama(
    base_url="http://127.0.0.1:11434/",
    model="qwen2.5:14b",
    temperature=0.7,
    max_tokens=2000,
    streaming=True,
    keep_alive="5m",
)

from langchain_core.output_parsers import JsonOutputParser
import json

# 3. 更新提示模板，使用双大括号转义JSON示例
prompt = ChatPromptTemplate.from_template("""
请将以下文本翻译成英文，并以JSON格式返回结果。
输入文本: {text}

要求返回的JSON格式如下:
{{
    "original_text": "输入的文本",
    "translation": "英文翻译",
    "phonetic": "音标",
    "alternatives": ["其他可能的翻译1", "其他可能的翻译2"]
}}

只返回JSON格式的结果，不要有任何其他文字。
""")

# 4. 创建JSON解析器
json_parser = JsonOutputParser()

# 5. 创建带解析和格式化的链:LCEL表达式
chain = (
    prompt 
    | llm 
    | json_parser  # 使用JSON解析器
)

# 6. 使用新的链
result = chain.invoke({"text": "我爱你"})
print(result)  # 这将输出一个Python字典

# 如果需要JSON字符串格式
json_result = json.dumps(result, ensure_ascii=False, indent=2)
print(json_result)

print("end")